#ifndef PROCESSOR_HPP
#define PROCESSOR_HPP
#include "bandita.hpp"
#include "elohalott.hpp"
#include "pok.hpp"
#include "szorny.h"
#include "karakter.hpp"
#include "menu.hpp"
#include <string>
#include <iostream>
#include <fstream>
#include <vector>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int vege=0;
using namespace std;
class processor
{
public:
    processor();
    menu m;
    karakter k;
    void karkre();
    void kalandoz(int a);
    void kuldetes();
    void valaszt();
    void ment();
    void betolt();
    string convertint(int number);
private:

    void harc(szorny sz);
    void fejtoro();
    ifstream infile;
    ifstream outfile;
    void tamad(karakter &k,szorny &sz);
};

processor::processor()
{
    infile.open("infile.txt");
    cout<<"üdv! új játék 0; betöltés 1"<<endl;
    int a;
    cin>>a;
    if (a==0)
    {
        karkre();
        m.ures(k);
        valaszt();

    }

}

string processor::convertint(int number)
{
    if (number == 0)
        return "0";
    string temp="";
    string returnvalue="";
    while (number>0)
    {
        temp+=number%10+48;
        number/=10;
    }
    for (int i=0; i<temp.length(); i++)
        returnvalue+=temp[temp.length()-i-1];
    return returnvalue;
}

void processor::karkre()
{
    k.ep=100;
    k.mp=100;
    k.tp=0;
    k.szint=1;
    k.pancel=1;
    k.faj="faj";
    karakter::var a("utes",9,5,0);
    k.magic.push_back(a);
}

void processor::valaszt()
{
    int a;
    while(a!=3 && vege!=1)
    {
        m.ures(k);
        m.kiir("Udvozollek kalandozo!  ");
        m.kiir("Mit szeretnel csinalni? ");
        m.kiir2("Tortenet:0");
        m.kiir2("kalandozas:1 ");
        m.kiir2("mentes:2 ");
        m.kiir2("kilepes:3 ");
        cin>>a;
        if(a==0)
        {
            kuldetes();
        }
        if(a==1)
        {
            int i;
            srand ( time(NULL) );

            i = rand() % 10+1;
            kalandoz(k.szint+i);
        }
    }

}

void processor::kuldetes()
{
    m.ures(k);

    string c;
    int i=0;
    getline(infile,c);

    while(c!="/" && vege!=1 && c!="<harc>")
    {

        m.kiir(c);
        i++;
        getline(infile,c);
        if(c=="<vege>")
        {
            vege=1;
        }
    }
    if(c=="<harc>")
    {

        int az,a;
        cin>>a;
        infile>>az;
        kalandoz(az);
    }
    int az;

    cin>>az;

}

void processor::kalandoz(int a)
{
    /*  char an='n';
      while(an!='0')
      {*/

    int i;
    srand ( time(NULL) );

    i = rand() % (10) +1;
    if (i>7)
    {

        elohalott sz(k.szint+a);

        while(sz.ep>0)
        {
            m.ures(k);
            m.kiir("Egy elohalott radtamadt!!  ");
            string az="ep: ";
            az+=convertint(sz.ep);
            m.kiir(az);
            tamad(k,sz);

        }
        m.ures(k);
        m.kiir("Gyoztel!!! ");


    }
    else if(i>3 && i<=7)
    {
        pok sz(k.szint+a);

        while(sz.ep>0)
        {
            m.ures(k);
            m.kiir("Egy pok radtamadt!!  ");
            string az="ep: ";
            az+=convertint(sz.ep);
            m.kiir(az);
            tamad(k,sz);

        }
        m.ures(k);
        m.kiir("Gyoztel!!! ");
    }
    else if(i<=3)
    {
        bandita sz(k.szint+a);

        while(sz.ep>0)
        {
            m.ures(k);
            m.kiir("Egy bandita radtamadt!!  ");
            string az="ep: ";
            az+=convertint(sz.ep);
            m.kiir(az);
            tamad(k,sz);

        }
        m.ures(k);
        m.kiir("Gyoztel!!! ");
    }
    /*   m.kiir("tovabb:1 vissza:0 ");
       cin>>an;
      }*/

}

void processor::tamad(karakter &k,szorny &sz)
{
    int j;
    srand ( time(NULL) );
    j = rand() % 10+1;


    int i;

    srand ( time(NULL) );

    i = rand() % sz.varazslatok.size()+0;
    string az="tamad: ";
    az+=sz.varazslatok[i].nev;
    m.kiir(az);
    if(sz.varazslatok[i].tal>=j)
    {
        m.kiir("eltalalt teged!");
        k.ep=k.ep-sz.varazslatok[i].seb;
        m.f(k);
    }
    else
    {
        m.kiir("elhibazta!");
    }
    m.kiir("tamadas:0 - vszam-1  ");
    int a;
    cin>>a;
    k.mp=k.mp-k.magic[a].m;
    srand ( time(NULL) );

    i = rand() %10+1;

    if((k.magic[a].tal+(k.szint/2))>=i)
    {
        m.kiir(" ");
        az="eltalaltad ezzel: ";
        az+=k.magic[a].nev;
        m.kiir(az);
        sz.ep=sz.ep-(k.magic[a].seb+k.szint);
    }
    else
    {
        m.kiir(" ");
        m.kiir("elhibaztad...");
    }
    cin>>a;

}

void processor::harc(szorny sz)
{

    while(sz.ep>0)
    {
        m.ures(k);
        if(sz.s==1)
        {
            m.kiir("Egy bandita radtamadt!!  ");
        }
        if(sz.s==2)
        {
            m.kiir("Egy szörny radtamadt!!  ");
        }

        string az="ep: ";
        az+=convertint(sz.ep);
        m.kiir(az);
        tamad(k,sz);

    }
    m.ures(k);
    m.kiir("Gyoztel!!! ");
}

#endif

